// push(x) -- 将一个元素放入队列的尾部。
// pop() -- 从队列首部移除元素。
// peek() -- 返回队列首部的元素。
// empty() -- 返回队列是否为空。

#include<iostream>
#include<stack>
using namespace std;

class MyQueue {
public:
    stack<int> stIn, stOut;

    MyQueue() {}
    
    void push(int x) { // 入队
        stIn.push(x);
    }
    
    int pop() { //出队
        if(stOut.empty()){
            while(!stIn.empty()){
                stOut.push(stIn.top());
                stIn.pop();
            }
        }
        int result = stOut.top();
        stOut.pop();
        return result;
    }
    
    int peek() { // 
        int res = this->pop();
        stOut.push(res);
        return res;
    }
    
    bool empty() {
        return stIn.empty() && stOut.empty();
    }
};

int main() {
    MyQueue queue;
    queue.push(1);
    queue.push(2);
    cout << "Peek: " << queue.peek() << endl; // 应输出 1
    cout << "Pop: " << queue.pop() << endl;   // 应输出 1
    cout << "Empty: " << (queue.empty() ? "true" : "false") << endl; // 应输出 false

    return 0;
}
